﻿<?php
/**
 * Classe MAPPER da tabela TB_MEDICO
 * 
 * @author			Mário R. Castro
 * @copyright		Voitech Sistema
 * @package			SEMAS
 * @subpackage		semas.application.models
 * @version			1.0
*/
class App_Model_MedicoMapper extends Voitech_Mapper{

    public function __construct(App_Model_Medico $obMedico){
        $this->obModel = $obMedico;
    }    
    
    public function buscarPorId() {}
    
    public function carregar(stdClass $obRow) {
        $this->obModel->setCoMedico($obRow->co_medico);
        $this->obModel->setNuCrm($obRow->nu_crm);
        $this->obModel->setObParamUf(new App_Model_ParamUf($obRow->sg_uf_crm));
        $this->obModel->setStStatus($obRow->st_status);
        $this->obModel->setFlagExcluir($obRow->fl_excluir);
        $this->obModel->setDtCadastro($obRow->dt_cadastro);
        
        $obEspecialidade = new App_Model_Especialidade();
        $obEspecialidade->setCoEspecialidade($obRow->co_especialidade);
        $obEspecialidade->setNoEspecialidade($obRow->no_especialidade);
        $this->obModel->setObEspecialidade($obEspecialidade);        

        $this->obModel->setCoPessoa($obRow->co_pessoa);
        $this->obModel->setNoPessoa($obRow->no_pessoa); 
                
        return $this;
    }
    
    public function cadastrar() {
        $arMedico = $this->retornarArrayPopulado();     
        return App_Model_Db_Medico::build()->insert($arMedico);     
    }
	
    public function alterar() {
        $arMedico = $this->retornarArrayPopulado();        
        return App_Model_Db_Medico::build()->update($arMedico,App_Model_Db_Medico::build()->getAdapter()->quoteInto('co_Medico = ?',$this->obModel->getCoMedico()));    
    }

    public function retornarArrayPopulado() {
    	
		$arrMedico = array(	'nu_crm'=>$this->obModel->getNuCrm(),
							'sg_uf_crm'=>$this->obModel->getObParamUf()->getSgUf(), 
							'co_pessoa'=>$this->obModel->getCoPessoa(), 
							'co_especialidade'=>$this->obModel->getObEspecialidade()->getCoEspecialidade() );
       
        if( $this->obModel->getCoMedico() != '' ) {
            $arrPessoa['co_medico'] = $this->obModel->getCoMedico();
        }
        return $arrMedico;
    }

    public function ativar() {
        if($this->obModel->getCoMedico() == ''){
            throw new Voitech_Exception('Falta cod. Medico');
        }
        $arrUpdate = array('st_ativo'=>'S');       
        return App_Model_Db_Medico::build()->update($arrUpdate,App_Model_Db_Medico::build()->getAdapter()
                                                                                            ->quoteInto('co_medico = ?',$this->obModel->getCoMedico()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoMedico() == ''){
            throw new Voitech_Exception('Falta cod. Medico');
        }
        $arrUpdate = array('st_ativo'=>'N');
        return App_Model_Db_Medico::build()->update($arrUpdate
                                                   ,App_Model_Db_Medico::build()->getAdapter()
                                                                                ->quoteInto('co_medico = ?',$this->obModel->getCoMedico()));                
    }
      
    public function excluir() {
        if($this->obModel->getCoMedico() == ''){
            throw new Voitech_Exception('Falta cod. Medico');
        }
        return App_Model_Db_Medico::build()->delete(App_Model_Db_Medico::build()->getAdapter()->quoteInto('co_medico = ?',$this->obModel->getCoMedico()));                
    }
	
}